<?php

/**
 * Reservaderecurso form.
 *
 * @package    ecampus
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class ReservaderecursoForm extends BaseReservaderecursoForm
{
  public function configure()
  {
      $anios = range(2010,2020);
//      $this->widgetSchema['id_recurso'] = new sfWidgetFormInputHidden();
//      $this->widgetSchema['id_recurso']->setHidden(false);
//      $this->widgetSchema['fecha_desde'] = new sfWidgetFormI18nDate(array(
//                'culture' => 'es',
//                'years' => $anios
//      ));
//      $this->widgetSchema['fecha_hasta'] = new sfWidgetFormI18nDate(array(
//                'culture' => 'es',
//                'years' => $anios
//      ));

      $this->validatorSchema->setPostValidator(
                new sfValidatorSchemaCompare('fecha_desde',
                        sfValidatorSchemaCompare::LESS_THAN_EQUAL,
                        'fecha_hasta',
                        array(),
                        array('invalid' => 'La fecha de inicio (%left_field%) debe ser menor a la de finalizacion (%right_field%)'))
          );

      $this->validatorSchema->setPostValidator(
          new   sfValidatorCallback(array('callback' => array($this, 'checkDisponibilidad')))
                                               );

//   $this->mergePostValidator( new ReservadeRecursoValidatorSchema() );
  }
  public function checkDisponibilidad($validator, $values)
  {
    if(!($values['fecha_desde'] <= $values['fecha_hasta'])  )
    {
        throw new sfValidatorError($validator, 'La fecha inicial debe ser menor a la de finalizacion');
    }
    $reserva = $this->getObject();
//      $recurso = $reserva->getRecurso();
    $recurso = Doctrine_Core::getTable('recurso')->find($values['id_recurso']);
    if( !$recurso->estaDisponible($values['fecha_desde'],$values['fecha_hasta']) )
    {
      // si el horario esta repetido, lanzar un error
      throw new sfValidatorError($validator, 'Recurso no disponible en el intervalo indicado');
    }
    // si todo ok, retorna los clean values
    return $values;
  }
  /*
   * setear parametros predefinidos para la reserva
   */
  public function setRecurso($id_recurso)
  {
   $this->widgetSchema['id_recurso'] = new sfWidgetFormInputHidden(array('default' => $id_recurso), array());
   $this->widgetSchema->setLabel('id_recurso', false);
  }
  public function setCurso($id_curso)
  {
   $this->widgetSchema['id_curso'] = new sfWidgetFormInputHidden(array('default' => $id_curso), array());
   $this->widgetSchema->setLabel('id_curso', false);
  }
  public function setCursos($id_docente)
  {
//      $cursos = Doctrine_Core::getTable('Curso')->getCursosPorDocente($id_docente);
//
//      $this->widgetSchema['id_curso'] = new sfWidgetFormDoctrineChoice(array(
//                'model' => 'Curso',
//                'multiple' => false,
//          'label' => 'c'
//      ));
//
//      $docente = Doctrine_Core::getTable('Docente')->find($id_docente);
//      $cursos = $docente->getCursos();
          $cursos = Doctrine_Query::create()
            ->select('c.id_curso id, c.nombre nombre')
              ->from('curso c')
              ->where('c.id_docente = ?',$id_docente)
//              ->fe
              ->fetchArray();
//              ->fetchArray(array('id' => 'nombre'));
    $v_curso = array();
        foreach ($cursos as $curso) {
            $v_curso[$curso['id']] = $curso['nombre'];
        }
//      $this->widgetSchema['id_curso'] = new sfWidgetFormDoctrineChoice(array(
//                'model' => 'Curso',
//                'multiple' => false,
//          'label' => 'c'
//      ));

      $this->widgetSchema['id_curso'] = new sfWidgetFormChoice(array(
          'choices' => $v_curso,
          'expanded' => false,
          'label' => 'Curso'
      ));
  }
  public function  save($con = null) {
          parent::save($con);
    }
}
